﻿using System;
using System.Collections.Generic;
using System.Globalization;
using System.Web.UI;
using System.Web.UI.WebControls;
using Model.Refeicoes;
using SandTrap.WebControls;
using Services.Refeicoes;

namespace welwitschia.ServicoRefeicoes
{
    public partial class RefeicoesServidas : PaginaBase
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!Page.IsPostBack)
                {
                    if(String.IsNullOrEmpty(Request.QueryString["uid"]) || String.IsNullOrEmpty(Request.QueryString["dt"]))
                        throw new Exception("Parametros de entrada inválidos para este ecrã! (uid/dt)");

                    hfIdUnidade.Value = Request.QueryString["uid"];
                    Int64 idUnidade = Convert.ToInt64(hfIdUnidade.Value);
                    hfDataRefeicao.Value = Request.QueryString["dt"];
                    DateTime dataRefeicao = DateTime.ParseExact(hfDataRefeicao.Value, "yyyyMMdd", null);
                    lvRefeicoesServidas.DataSource = RefeicaoService.ObterListaRefeicaoUnidadesPorUnidadeDataRefeicao(idUnidade, dataRefeicao);
                    lvRefeicoesServidas.DataBind();
                }
            }
            catch(Exception ex)
            {
                MostraErro(ex.Message);
            }
        }


        protected void lvRefeicoesServidas_ItemDeleting(object sender, ListViewDeleteEventArgs e)
        {
        }

        protected void lvRefeicoesServidas_ItemEditing(object sender, ListViewEditEventArgs e)
        {
        }

        protected void lvRefeicoesServidas_ItemCommand(object sender, ListViewCommandEventArgs e)
        {
        }

        protected void btnGravar_Click(object sender, EventArgs e)
        {
         
            Int64 idUnidade = Convert.ToInt64(hfIdUnidade.Value);
            DateTime dataRefeicao = DateTime.ParseExact(hfDataRefeicao.Value, "yyyyMMdd", null);
            IList<RefeicaoUnidade> lrefeicaoUnidade = RefeicaoService.ObterListaRefeicaoUnidadesPorUnidadeDataRefeicao(idUnidade, dataRefeicao);
            
            Control control = null;
            NumberBox numServidas = null;
            HiddenField lvhfIdUnidade = null;
            HiddenField lvhfIdRefeicaoContratada = null;
            Label lvlblDataRefeicao = null;
            for (Int32 i = 0; i < lvRefeicoesServidas.Items.Count; i++)
            {
                control = lvRefeicoesServidas.Items[i].Controls[1].Controls[4];
                numServidas = (NumberBox)control.FindControl("lvnbNumRefeicoesServias");
                if (numServidas.Amount.HasValue)
                {
                    lvhfIdUnidade = (HiddenField)control.FindControl("lvhfIdUnidade");
                    lvhfIdRefeicaoContratada = (HiddenField)control.FindControl("lvhfIdRefeicaoContratada");
                    lvlblDataRefeicao = (Label)control.FindControl("lvlblDataRefeicao");

                    foreach(RefeicaoUnidade refeicaoUnidade in lrefeicaoUnidade){
                        if(refeicaoUnidade.Unidade.IdUnidade == Convert.ToInt64(lvhfIdUnidade.Value)
                            && refeicaoUnidade.Refeicao.RefeicaoContratada.IdRefeicaoContratada == Convert.ToInt64(lvhfIdRefeicaoContratada.Value)
                            && refeicaoUnidade.Refeicao.DataRefeicao == DateTime.ParseExact(lvlblDataRefeicao.Text,"d", CultureInfo.CurrentCulture ))
                        {
                            refeicaoUnidade.RefeicoesServidas = numServidas.Amount.Value;
                            RefeicaoService.Actualiza(refeicaoUnidade);
                        
                            break;
                        }
                    }
                }
            }

            if(lrefeicaoUnidade.Count>0)
                RefeicaoService.ActualizaEstadoContadoresEfectivosRefeicao(lrefeicaoUnidade[0].Refeicao.RefeicaoContratada.Contrato.NumeroContrato, dataRefeicao);

            Response.Redirect("~\\ServicoRefeicoes\\RefeicoesAbertasContratos.aspx");
        }
    }
}